package com.jvtd.eyl.data.api;

import com.jvtd.bean.EmptyBean;
import com.jvtd.eyl.bean.binding.BookBean;
import com.jvtd.eyl.bean.binding.BrowseBean;
import com.jvtd.eyl.bean.binding.ClassBean;
import com.jvtd.eyl.bean.binding.PeriodicalBean;
import com.jvtd.eyl.bean.http.BannerBean;
import com.jvtd.eyl.bean.http.BaseResponse;
import com.jvtd.eyl.bean.http.LoginReqBean;
import com.jvtd.eyl.bean.http.LoginResBean;
import com.jvtd.eyl.bean.http.MyBookBean;
import com.jvtd.eyl.bean.http.TimeBean;
import com.jvtd.eyl.constants.App;

import java.util.List;

import io.reactivex.Observable;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;

/**
 * Created by NCL on 2017/7/23.
 * api
 */
public interface ApiHelper
{
    /**
     * 网信办登录信息获取
     * @param loginReqBean 登录请求实体
     * @return 登录返回实体
     */
    @POST(App.HTTP_AUTH_RESULT)
    Observable<LoginResBean> login(@Body LoginReqBean loginReqBean);

    /**
     * banner列表获取
     * @return banner列表实体数据
     */
    @GET("banner/default/index")
    Observable<BaseResponse<List<BannerBean>>> getBannerList();

    /**
     * 分类列表获取
     * @return 分类列表实体数据
     */
    @GET("category/default/index")
    Observable<BaseResponse<List<ClassBean>>> getClassList();

    /**
     * 所有期刊获取
     * @return 所有期刊实体数据
     */
    @GET("document/default/index")
    Observable<BaseResponse<List<PeriodicalBean>>> getAllPeriodicalList();

    /**
     * 获得二级分类
     * @param id 一级分类ID
     * @return 二级分类列表
     */
    @FormUrlEncoded
    @POST("category/default/gettwocategory")
    Observable<BaseResponse<List<ClassBean>>> getSecondaryClassList(@Field("id") String id);

    /**
     * 获取二级分类下期刊接口
     * @param category_id 二级id
     * @return 二级分类下期刊列表
     */
    @FormUrlEncoded
    @POST("document/default/getcydocument")
    Observable<BaseResponse<List<PeriodicalBean>>> getClassPeriodicalList(@Field("category_id") String category_id);

    /**
     * 获得期刊下有书籍信息的时间点
     * @param document_id 期刊ID
     * @return 时间点
     */
    @GET("document/default/getyears")
    Observable<BaseResponse<List<TimeBean>>> getTimeClassList(@Query("document_id") String document_id);

    /**
     * 获得期刊下所有书籍信息
     * @param document_id 期刊ID
     * @param user_id 用户ID
     * @param sorts 排序
     * @param year 年份id
     * @return 书籍列表
     */
    @FormUrlEncoded
    @POST("document/default/getdocumentper")
    Observable<BaseResponse<List<BookBean>>> getBookList(@Field("document_id") String document_id, @Field("user_id") String user_id, @Field("sorts") String sorts, @Field("year") String year);

    /**
     * 添加书籍到我的书架
     * @param user_id 用户ID
     * @param periodical_id 书籍id
     * @return 无
     */
    @FormUrlEncoded
    @POST("collection/default/addbook")
    Observable<BaseResponse<EmptyBean>> addBook(@Field("user_id") String user_id, @Field("periodical_id") String periodical_id);

    /**
     * 删除书籍 从我的书架
     * @param user_id 用户ID
     * @param periodical_id 书籍id
     * @return 无
     */
    @FormUrlEncoded
    @POST("collection/default/deletebook")
    Observable<BaseResponse<EmptyBean>> delBook(@Field("user_id") String user_id,@Field("periodical_id") String periodical_id);

    /**
     * 添加我的浏览
     * @param user_id 用户ID
     * @param periodical_id 书籍id
     * @return 无
     */
    @FormUrlEncoded
    @POST("collection/default/addview")
    Observable<BaseResponse<EmptyBean>> addBrowse(@Field("user_id") String user_id,@Field("periodical_id") String periodical_id);

    /**
     * 我的浏览记录
     * @param user_id 用户id
     * @return 浏览记录
     */
    @FormUrlEncoded
    @POST("collection/default/myviews")
    Observable<BaseResponse<List<BrowseBean>>> getMyBrowseList(@Field("user_id") String user_id);

    /**
     * 搜索期刊
     * @param category_name 关键字
     * @return 搜索结果
     */
    @FormUrlEncoded
    @POST("document/default/searchdocument")
    Observable<BaseResponse<List<PeriodicalBean>>> searchPeriodicalList(@Field("category_name") String category_name);

    /**
     * 获取我的书架信息
     * @param user_id 用户id
     * @return 我的书架信息
     */
    @FormUrlEncoded
    @POST("collection/default/mybooks")
    Observable<BaseResponse<List<MyBookBean>>> getMyBookList(@Field("user_id") String user_id);
}
